#!/usr/bin/env python
# encoding: utf-8
"""
vmfileproxy.py

Created by Clifford Meece on 2008-04-27.
Copyright (c) 2008 abeedoo.com. All rights reserved.
"""
# todo create a preferences pane
# todo simplyfy output window
# todo put in true debugging to console
# todo create icons
# todo edit plist for more file types
# todo create installer program
# todo create windows installer
# todo make listener a windows service
# todo auto start the right vm
 
import wx
import os
import sys
import socket


ID_ABOUT=101
ID_OPEN=102
ID_BUTTON1=110
ID_EXIT=200
class MainWindow(wx.Frame):
    def __init__(self,parent,id,title):
        self.dirname=''
        try:
            filename = sys.argv[1]
        except IndexError:
            # No parameters at all: print usage information and exit
            usage()
            sys.exit(1)
        wx.Frame.__init__(self,parent,wx.ID_ANY, title)
        self.control = wx.TextCtrl(self, 1, style=wx.TE_MULTILINE)
        mac_root="/Users/cliff/"
        guest_root="m:/"
        str = "original filename = " + filename
        str = str + "\nShared folder path is" + mac_root
        str = str + "\nGuest root is " + guest_root
        # replace shared path with guest path
        guest_path = filename.replace(mac_root, guest_root)
        str = str + "\nGuest path will be: " + guest_path
        sys.stdout.write(str)
        host = "172.16.8.131"
        port = 23
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((host, port))
        s.send(guest_path)
        # For now, just close, later check status message
        # data = s.recv(1024)
        s.close()
        #print 'Received', repr(data)
        self.control.SetValue(str)
        self.CreateStatusBar() # A Statusbar in the bottom of the window
        # Setting up the menu.
        filemenu= wx.Menu()
        filemenu.Append(ID_OPEN, "&Open"," Open a file to edit")
        filemenu.AppendSeparator()
        filemenu.Append(ID_ABOUT, "&About"," Information about this program")
        filemenu.AppendSeparator()
        filemenu.Append(ID_EXIT,"E&xit"," Terminate the program")
        # Creating the menubar.
        menuBar = wx.MenuBar()
        menuBar.Append(filemenu,"&File") # Adding the "filemenu" to the MenuBar
        self.SetMenuBar(menuBar)  # Adding the MenuBar to the Frame content.
        wx.EVT_MENU(self, ID_ABOUT, self.OnAbout)
        wx.EVT_MENU(self, ID_EXIT, self.OnExit)
        wx.EVT_MENU(self, ID_OPEN, self.OnOpen)
        self.sizer2 = wx.BoxSizer(wx.HORIZONTAL)
        self.buttons=[]
        for i in range(0,6):
            self.buttons.append(wx.Button(self, ID_BUTTON1+i, "Button &"+`i`))
            self.sizer2.Add(self.buttons[i],1,wx.EXPAND)
        # Use some sizers to see layout options
        self.sizer=wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.control,1,wx.EXPAND)
        self.sizer.Add(self.sizer2,0,wx.EXPAND)
        #Layout sizers
        self.SetSizer(self.sizer)
        self.SetAutoLayout(1)
        self.sizer.Fit(self)
        self.Show(1)
    def OnAbout(self,e):
        d= wx.MessageDialog( self, " A sample editor \n"
                            " in wxPython","About Sample Editor", wx.OK)
                            # Create a message dialog box
        d.ShowModal() # Shows it
        d.Destroy() # finally destroy it when finished.
    def OnExit(self,e):
        self.Close(True)  # Close the frame.
    def OnOpen(self,e):
        """ Open a file"""
        dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "*.*", wx.OPEN)
        if dlg.ShowModal() == wx.ID_OK:
            self.filename=dlg.GetFilename()
            self.dirname=dlg.GetDirectory()
            f=open(os.path.join(self.dirname, self.filename),'r')
            self.control.SetValue(f.read())
            f.close()
        dlg.Destroy()
app = wx.PySimpleApp()
frame = MainWindow(None, -1, "Sample editor")
app.MainLoop()
